<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 实例方法： 通过构造函数创建的对象，它调用的方法。
        // MDN上 Array.prototype.reduce()  ==> reduce 实例方法

        // 语法： arr.reduce(callbackFn, initialValue)
        // 作用： 对数组里的每个元素都执行一个自定义的reducer函数，将其结果汇总为单个返回值。
        //   参数：
        // callbackFn               :  回调函数   必须     √
        // initialValue             :  初始值     （可选）  √

        // callbackFn的参数：
        //       previousValue      :  上一次调用callbackFn的返回值    √
        //       currentValue       :  当前元素                      √
        //       currentIndex       :  当前元素的索引  （可选）
        //       array              :  源数组  （可选）

        // 返回值： 使用reducer回调函数遍历整个数组后的结果

        // 注意： 如果有初始值，那么prev第一次执行的时候，就是写的初始值
        //       如果没有初始值，initValue就是数组的第一个元素 arr[0], cur就依次取第二个元素

        const arr = [1, 2, 3]
        const res = arr.reduce((prev, curr) => prev + curr, 0)
        console.log(res)


        // 作用：常用于数组的求和
    </script>
</body>

</html>